/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ifpb.pp.lp.entity;

import ifpb.pp.lp.bean.Endereco;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;

/**
 *
 * @author Gabriella
 */
@Entity
public class Cliente implements Serializable {

    private int id;
    private String nome;
    private String cpf;
    private Endereco endereco;
    private List<Venda> minhasCompras;

    public Cliente() {
        this.endereco = new Endereco();
        this.minhasCompras = new ArrayList<Venda>();
    }

    public Cliente(String nome, String cpf) {
        this.endereco = new Endereco();
        this.minhasCompras = new ArrayList<Venda>();
        this.nome = nome;
        this.cpf = cpf;
    }

    @Column(unique=true)
    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    @Id
    @GeneratedValue
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    //@Column(nullable=true)
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    @Embedded
    public Endereco getEndereco() {
        return endereco;
    }

    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }

    @OneToMany(fetch=FetchType.EAGER)
    public List<Venda> getMinhasCompras() {
        return minhasCompras;
    }

    public void setMinhasCompras(List<Venda> minhasCompras) {
        this.minhasCompras = minhasCompras;
    }

    public boolean addVenda(Venda venda){
        return this.minhasCompras.add(venda);
    }

    public boolean removeVenda(Venda venda){
        if(this.minhasCompras.contains(venda)){
            return this.minhasCompras.remove(venda);
        }
        return true;
    }    

}
